package cn.xxluckey.util;

import java.nio.ByteBuffer;

public class TimeUtil {
    public static byte[] encodeTime(int year, int month, int day, int hour, int minute, int second, int millisecond) {
        ByteBuffer buffer = ByteBuffer.allocate(7);

        buffer.putShort((short) millisecond); // 毫秒，2 字节
        buffer.put((byte) (minute & 0x3F));   // 分钟（D5-D0）
        buffer.put((byte) (hour & 0x1F));     // 小时（D4-D0）
        buffer.put((byte) (day & 0x1F));      // 天（D4-D0）
        buffer.put((byte) (month & 0x0F));    // 月份（D3-D0）
        buffer.put((byte) (year % 100));      // 年份的最后两位（D6-D0）

        return buffer.array();
    }

    public static String decodeTime(byte[] timeData) {
        ByteBuffer buffer = ByteBuffer.wrap(timeData);

        int millisecond = buffer.getShort() & 0xFFFF; // 毫秒
        int minute = buffer.get() & 0x3F;            // 分钟
        int hour = buffer.get() & 0x1F;              // 小时
        int day = buffer.get() & 0x1F;               // 天
        int month = buffer.get() & 0x0F;             // 月
        int year = buffer.get() & 0xFF;              // 年（两位）

        return String.format("20%02d-%02d-%02d %02d:%02d:%02d.%03d",
                year, month, day, hour, minute, 0, millisecond);
    }
}
